//
// Created by ✎﹏ℳ๓独赏 ☆独醉 on 2023/2/27.
//
#include <stdio.h>
#include <string.h>

/*
 * 结构体描述复杂对象 --- 由自己创造出来的一种类型
 */
struct Book{
    char name[100];
    short price;
};

int main(){
    //结构体测试
    printf("Structure test:\n");

    //利用结构体类型创建出一个该类型的变量
    struct Book a1 = {"C Language Programming",55};
    printf("bookName:%s\nbookPrice:%d\n",a1.name,a1.price);

    //修改值
    a1.price = 50;
    printf("Special sale:%d\n\n",a1.price);

    //修改书名（由于书名是用数组存放，所以无法像改价格一样直接修改）
    strcpy(a1.name,"C++");//strcpy --- string copy --- 字符串拷贝

    //结构体变量的地址及应用
    struct Book *structBook = &a1;
    printf("Address:%p\n",structBook);

    // .: 结构体变量.成员
    printf("bookName:%s\nbookPrice:%d\n\n",(*structBook).name,(*structBook).price);

    // ->: 结构体指针->成员
    printf("bookName:%s\nbookPrice:%d\n",structBook -> name,structBook -> price);

    printf("Test complete\n\n\n");

    return 0;
}